<?php
class download{
	function send_file($file_path, $filename,$charset = 'UTF-8', $mimeType = 'application/octet-stream')
	{
		$filesize = filesize($file_path);
		self::header($filesize,$filename,$charset="UTF-8",$mimeType = 'application/octet-stream');
		readfile($file_path);
		exit();
	}
	static function header($size,$file_name,$charset="UTF-8",$mimeType = 'application/octet-stream')
	{
		// 文件名乱码问题
		if (preg_match("/MSIE/", $_SERVER["HTTP_USER_AGENT"])) {
			$filename = urlencode($file_name);
			$filename = str_replace("+", "%20", $filename);// 替换空格
			$attachmentHeader = "Content-Disposition: attachment; filename=\"{$file_name}\"; charset={$charset}";
		} else if (preg_match("/Firefox/", $_SERVER["HTTP_USER_AGENT"])) {
			$attachmentHeader = 'Content-Disposition: attachment; filename*="utf8\'\'' . $file_name. '"' ;
		} else {
			$attachmentHeader = "Content-Disposition: attachment; filename=\"{$file_name}\"; charset={$charset}";
		}
		//header("Pragma: public");   header("Expires: 0");
		header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
		header("Content-Type: application/force-download");
		header("Content-Type: {$mimeType}");
		header($attachmentHeader);
		header('Pragma: cache');
		header('Cache-Control: public, must-revalidate, max-age=0');
		header("Content-Length: {$size}");
	}
}